package com.clstu.homework;

import java.io.File;
import java.io.IOException;
import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;

public class Homework02 {
    public static void main(String[] args) throws IOException, NoSuchMethodException, InvocationTargetException, InstantiationException, IllegalAccessException {
        Class<File> fileClass = File.class;
        Constructor<?>[] constructors = fileClass.getConstructors();//得到public的构造器
        for (Constructor<?> constructor : constructors) {
            System.out.println("File的构造器===="+constructor);//构造器这里不用getName更好,会打印参数列表,不然只能打印名称
        }
        System.out.println("===========");
        Constructor<?>[] declaredConstructors = fileClass.getDeclaredConstructors();//得到所有的构造器
        for (Constructor<?> constructor : declaredConstructors) {
            System.out.println("File的构造器===="+constructor);
        }

//        File file = fileClass.newInstance();//class对象只能使用无参构造器创建对象
//        if (!file.exists()){
//            if (file.createNewFile()){
//                System.out.println("文件创建成功");
//            }
//        }

        Constructor<?> constructor1 = fileClass.getConstructor(String.class);
        File file = (File) constructor1.newInstance("src\\hello.txt");
//        if (!file.exists()) {
//            if (file.createNewFile()){
//                System.out.println("文件创建成功");
//            }
//        }
        //通过反射的方法创建文件
        Method createNewFile = fileClass.getMethod("createNewFile");
        Method exists = fileClass.getMethod("exists");
        if (!(boolean) exists.invoke(file)){
            if((boolean) createNewFile.invoke(file)){
                System.out.println("文件创建成功");
            }
        }

    }
}
